const {
  menuApi,
  messageApi,
  notificationApi,
  userApi
} = require('../../services/api');

Page({
  data: {
    menu: [],
    showRecommended: false,
    messages: [],
    statistics: {
      todayDishes: 0,
      weeklyFavorite: '',
      totalOrders: 0,
      monthlyVisits: 0
    },
    userInfo: {
      name: '家庭厨房',
      avatar: 'https://picsum.photos/200/200'
    },
    notice: {
      text: '加载中...',
      color: '#00f2ea'
    },
    loading: true
  },

  onLoad() {
    if (!wx.getStorageSync('token')) {
      wx.reLaunch({
        url: '/pages/login/index'
      });
      return
    }
    // 加载所有数据
    this.loadAllData();
  },

  onShow() {
    // 刷新菜单数据
    this.loadMenuData();
  },

  // 加载所有数据
  async loadAllData() {
    try {
      // 并行加载多个数据
      await Promise.all([
        this.loadMenuData(),
        this.loadMessagesData(),
        this.loadNoticeData(),
        this.loadUserData(),
        this.loadStatisticsData()
      ]);

      // 所有数据加载完成
      this.setData({
        loading: false,
        loadComplete: true
      });
    } catch (error) {
      console.error('加载数据失败:', error);
      wx.showToast({
        title: '加载数据失败',
        icon: 'none'
      });

      this.setData({
        loading: false,
        loadComplete: true
      });
    }
  },

  // 加载菜单数据
  async loadMenuData() {
    try {
      // 先尝试获取今日菜单
      const res = await menuApi.getTodayMenu();

      if (res.data && res.data.dishes && res.data.dishes.length > 0) {
        // 格式化菜单数据
        const formattedMenu = res.data.dishes.map(dish => {
          return {
            id: dish.id,
            name: dish.name,
            count: dish.count,
            image: dish.image ||
              'https://images.pexels.com/photos/2097090/pexels-photo-2097090.jpeg?auto=compress'
          };
        });

        this.setData({
          menu: formattedMenu,
          todayMenuDate: res.data.date,
          showRecommended: false
        });
      } else {
        // 如果没有今日菜单，获取推荐菜单
        const recRes = await menuApi.getRecommendedMenu();

        this.setData({
          menu: recRes.data,
          showRecommended: true
        });
      }
    } catch (error) {
      console.error('加载菜单数据失败:', error);
      // 加载失败时显示空菜单
      this.setData({
        menu: [],
        showRecommended: true
      });
    }
  },

  // 加载消息数据
  async loadMessagesData() {
    try {
      const res = await messageApi.getMessages();

      if (res.data && res.data.length > 0) {
        // 格式化消息数据
        const formattedMessages = res.data.slice(0, 6).map(msg => {
          return `${msg.user_name}：${msg.content}`;
        });

        this.setData({
          messages: formattedMessages
        });
      }
    } catch (error) {
      console.error('加载消息数据失败:', error);
    }
  },

  // 加载通知数据
  async loadNoticeData() {
    try {
      const res = await notificationApi.getNotifications();

      if (res.data && res.data.length > 0) {
        // 获取最新的通知
        const latestNotice = res.data[0];

        this.setData({
          notice: {
            text: latestNotice.content,
            color: '#00f2ea'
          }
        });
      }
    } catch (error) {
      console.error('加载通知数据失败:', error);
    }
  },

  // 加载用户数据
  async loadUserData() {
    try {
      // 获取当前用户ID
      const userId = wx.getStorageSync('userId') || 1;
      const res = await userApi.getUserInfo(userId);

      if (res.data) {
        this.setData({
          userInfo: {
            name: res.data.name,
            avatar: res.data.avatar || 'https://picsum.photos/200/200'
          }
        });
      }
    } catch (error) {
      console.error('加载用户数据失败:', error);
    }
  },

  // 加载统计数据
  async loadStatisticsData() {
    try {
      // 这里可以添加获取统计数据的API
      // 目前使用模拟数据
      this.setData({
        statistics: {
          todayDishes: 6,
          weeklyFavorite: '红烧狮子头',
          totalOrders: 128,
          monthlyVisits: 312
        }
      });
    } catch (error) {
      console.error('加载统计数据失败:', error);
    }
  },

  // 跳转到点菜页面
  goToOrder() {
    wx.switchTab({
      url: '/pages/order/index',
      success: () => {
        console.log('成功跳转到点菜页面');
      },
      fail: error => {
        console.error('跳转失败:', error);
        // 如果switchTab失败（可能order不是tabBar页面），尝试使用navigateTo
        wx.navigateTo({
          url: '/pages/order/index'
        });
      }
    });
  },

  // 跳转到菜品详情页
  goToFoodDetail(e) {
    const {
      id,
      name,
      image
    } = e.currentTarget.dataset;

    // 构建详情数据
    const detailData = {
      id: id,
      name: name,
      img: image,
      remark: '家庭最爱菜品',
      material: '根据菜品ID获取原材料信息',
      method: '根据菜品ID获取做法信息'
    };

    // 将详情数据存入缓存
    wx.setStorageSync('detailData', detailData);

    // 跳转到详情页
    wx.navigateTo({
      url: '/pages/detail/index',
      success: () => {
        console.log('成功跳转到详情页');
      },
      fail: error => {
        console.error('跳转失败:', error);
      }
    });
  },

  // 跳转到留言页面
  goToMessage() {
    wx.navigateTo({
      url: '/pages/family_message/index',
      success: () => {
        console.log('成功跳转到家庭留言页面');
      },
      fail: error => {
        console.error('跳转失败:', error);
      }
    });
  }
});